/* 829. 连续整数求和 */
/**
 * @param {number} n
 * @return {number}
 */

/* 
    判断正整数 n 是否可以表示k个连续正整数之和得方法

    如果k是奇数，则当 n 可以被 k 整除时，正整数n 可以表示成k个连续正整数之和
    如果k是偶数,则当n不可以被k整除且2n 可以被k整除，正整数n 可以表示成k 个连续
    正整数之和

*/
var consecutiveNumbersSum = function (n) {
	let ans = 0
	const bound = 2 * n
	for (let k = 1; k * (k + 1) <= bound; k++) {
		if (isKconsecutive(n, k)) ans++
	}
	return ans
}
const isKconsecutive = (n, k) => {
	if (k % 2 === 1) {
		return n % k === 0
	} else {
		return n % k !== 0 && (2 * n) % k === 0
	}
}

var consecutiveNumbersSum = (n) => {
	let res = 0
	for (let i = 1; n > 0; n -= i++) {
		res += n % i === 0
	}
	return res
}
const result = consecutiveNumbersSum(15)
console.log('consecutiveNumbersSum :>>', result)
